home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / util / moni / CopperDecode.lha / CopperDecode / CopperFile.bas < prev    next >
BASIC Source File  |  1999-05-21  |  3KB  |  65 lines

  1. ' Copper List File disasassembler - SNG May 1999, HiSoft BASIC, WB2+
  2.  
  3. WINDOW 1,"  AGA Copper Disassembler",(20,16)-(600,150),1+2+4+16+256
  4.  
  5. ver$="$ver: Copper Disassembler v2.1f © 21 May 1999 Simon N Goodwin"
  6.  
  7. LIBRARY OPEN "graphics.library":gfxbase&=LIBRARY("graphics.library")
  8. IF gfxbase&=0 THEN PRINT "Graphics library not found!" : STOP
  9.  
  10. coplist&=PEEKL(gfxbase&+50) : REM Find long Frame Copper list
  11. IF coplist&=0 THEN PRINT "Copper list not found!" : STOP
  12.  
  13. PRINT
  14. PRINT "This dissasembles the current copper list to a file or device."
  15. PRINT
  16. INPUT "Output Copper list path (e.g. RAM:CLIST) ";file$
  17. PRINT
  18. IF file$="" THEN STOP ELSE OPEN file$ FOR OUTPUT AS #1
  19.  
  20. c&=coplist&
  21. REPeat dis
  22.   w1%=PEEKW(c&) : w2%=PEEKW(c&+2) : PRINT #1; c&,
  23.   IF w1% AND 1
  24.     REM WAIT or SKIP?
  25.     IF w2% AND 1 THEN PRINT #1; "SKIP to "; ELSE PRINT #1; "WAIT for";
  26.     PRINT #1; " Y =";PEEK(c&);" X =";(PEEK(c&+1) AND 254);
  27.     IF (w2% AND 32766)<>32766 THEN PRINT #1; "& %";BIN$(w2% AND 32766);
  28.     PRINT #1;
  29.   ELSE 
  30.     IF w1% AND (&hFE01-65536)
  31.       PRINT #1; " Bad MOVE #";FN POS&(w2%);"to ";FN POS&(w1%)
  32.     ELSE 
  33.       PRINT #1; "MOVE "; : SELECT ON w1%
  34.         =142 TO 148
  35.           PRINT #1; "(X=";PEEK(c&+3);",Y=";PEEK(c&+2);") to ";
  36.           IF w1%>144 THEN PRINT #1; "DDF"; : ELSE PRINT #1; "DIW";
  37.           IF w1% AND 2 THEN PRINT #1; "START" : ELSE PRINT #1; "STOP"
  38.         =224 TO 254
  39.           PRINT #1; FN POS&(w2%);"to BPL";CHR$(49+(w1% AND 28)\4);
  40.           IF w1% AND 2 THEN PRINT #1; "PTL" : ELSE PRINT #1; "PTH"
  41.         =256 TO 262
  42.           PRINT #1; "%";BIN$(w2%);" to BPLCON";CHR$(48+((w1%-256)\2))
  43.         =264 TO 266
  44.           PRINT #1; w2%;"to BPL";CHR$(49+((w1% AND 2)=2));"MOD"
  45.         =268: PRINT #1; PEEK(c&+2);"," ;(PEEK(c&+3)\16);
  46.           PRINT #1; ",";(PEEK(c&+3) AND 15);"to BPLCON4"
  47.         =288 TO 318
  48.           PRINT #1; FN POS&(w2%);"to SPR";CHR$(48+(w1% AND 28)\4);
  49.           IF w1% AND 2 THEN PRINT #1; "PTL" : ELSE PRINT #1; "PTH"
  50.         =384 TO 446: PRINT #1; "R =";(w2%\256);:REM Palette change
  51.           PRINT #1; "G =";((w2% AND 240)\16);"B =";(w2% AND 15);
  52.           PRINT #1; "to COLOUR";((w1%-384)\2)
  53.         =484: PRINT #1; "%";BIN$(w2%);" to DIWHIGH"
  54.         =508: PRINT #1; "%";BIN$(w2%);" to FMODE"
  55.         =REMAINDER: PRINT #1; FN POS&(w2%);"to $";HEX$(w1%)
  56.       END SELect 
  57.     END IF 
  58.   END IF : c&=c&+4
  59.   IF w1%=-1 AND w2%=-2 THEN PRINT #1; " End of Copper List" : EXIT dis
  60. END REPEAT dis
  61. CLOSE #1
  62. PRINT "Listed to ";file$ : STOP
  63.  
  64. DEF FN POS&(t%)=-t%*(t%>=0)-(t%<0)*(65536+t%) ' REM Unsigned word
  65.